<?php
//src/Pyaf/GymBundle/Entity/Clase.php
namespace Pyaf\GymBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Clase
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Pyaf\GymBundle\Repository\ClaseRepository")
 */
class Clase
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="dia", type="string", length=10)
     * @Assert\NotBlank()
     * @Assert\MaxLength(10)
     */
    private $dia;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="horario", type="time")
     * @Assert\NotBlank()
     * 
     */
    private $horario;

    /**
     * @var string
     *
     * @ORM\Column(name="codigoClase", type="string", length=10, unique=true)
     * @Assert\NotBlank()
     * 
     */
    private $codigoClase;

    /**
     * @var integer
     *
     * @ORM\Column(name="nroCama", type="smallint", nullable=true)
     *  
     */
    private $nroCama;
    
    /**
    * @ORM\ManyToOne(targetEntity="Profesor", inversedBy="clases")
    * @ORM\JoinColumn(name="profesor_id", referencedColumnName="id", nullable=true)
    * @Assert\NotBlank()
    * 
    */
    protected $profesor;
    
    /**
     * @ORM\OneToMany(targetEntity="Asistencia", mappedBy="clase")
     */
    protected $asistencias;
    
    /**
     * @ORM\ManyToMany(targetEntity="Alumno", inversedBy="clases")
     * @ORM\JoinTable(name="alumnos_clases",
     *      joinColumns={@ORM\JoinColumn(name="clase_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="alumno_id", referencedColumnName="id")}
     *      )
     */
    protected $alumnos;
    
    /**
    * @ORM\OneToMany(targetEntity="AvisoFalta", mappedBy="clase")
    */
    protected $avisos;

    /**
     * @ORM\Column(name="habilitado", type="boolean")
     */
    private $habilitado;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set dia
     *
     * @param string $dia
     * @return Clase
     */
    public function setDia($dia)
    {
        $this->dia = $dia;
    
        return $this;
    }

    /**
     * Get dia
     *
     * @return string 
     */
    public function getDia()
    {
        return $this->dia;
    }

    /**
     * Set horario
     *
     * @param \DateTime $horario
     * @return Clase
     */
    public function setHorario($horario)
    {
        $this->horario = $horario;
    
        return $this;
    }

    /**
     * Get horario
     *
     * @return \DateTime 
     */
    public function getHorario()
    {
        return $this->horario;
    }

    /**
     * Set codigoClase
     *
     * @param integer $codigoClase
     * @return Clase
     */
    public function setCodigoClase($codigoClase)
    {
        $this->codigoClase = $codigoClase;
    
        return $this;
    }

    /**
     * Get codigoClase
     *
     * @return integer 
     */
    public function getCodigoClase()
    {
        return $this->codigoClase;
    }

    /**
     * Set nroCama
     *
     * @param integer $nroCama
     * @return Clase
     */
    public function setNroCama($nroCama)
    {
        $this->nroCama = $nroCama;
    
        return $this;
    }

    /**
     * Get nroCama
     *
     * @return integer 
     */
    public function getNroCama()
    {
        return $this->nroCama;
    }

    /**
     * Set profesor
     *
     * @param \Pyaf\GymBundle\Entity\Profesor $profesor
     * @return Clase
     */
    public function setProfesor(\Pyaf\GymBundle\Entity\Profesor $profesor = null)
    {
        $this->profesor = $profesor;
    
        return $this;
    }

    /**
     * Get profesor
     *
     * @return \Pyaf\GymBundle\Entity\Profesor 
     */
    public function getProfesor()
    {
        return $this->profesor;
    }

    /**
     * Set habilitado
     *
     * @param boolean $habilitado
     * @return Clase
     */
    public function setHabilitado($habilitado)
    {
        $this->habilitado = $habilitado;
    
        return $this;
    }

    /**
     * Get habilitado
     *
     * @return boolean 
     */
    public function getHabilitado()
    {
        return $this->habilitado;
    }
    
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->alumnos = new \Doctrine\Common\Collections\ArrayCollection();
    }
    
    public function __toString() {
        return $this->getCodigoClase();
    }


    /**
     * Add alumno
     *
     * @param \Pyaf\GymBundle\Entity\Alumno $alumno
     * @return Clase
     */
    public function addAlumno(\Pyaf\GymBundle\Entity\Alumno $alumnos)
    {
        $this->alumnos[] = $alumnos;
    
        return $this;
    }

    /**
     * Remove alumno
     *
     * @param \Pyaf\GymBundle\Entity\Alumno $alumno
     */
    public function removeAlumno(\Pyaf\GymBundle\Entity\Alumno $alumnos)
    {
        $this->alumnos->removeElement($alumnos);
    }

    /**
     * Get alumno
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getAlumno()
    {
        return $this->alumnos;
    }

    /**
     * Get alumnos
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getAlumnos()
    {
        return $this->alumnos;
    }

    /**
     * Add avisos
     *
     * @param \Pyaf\GymBundle\Entity\AvisoFalta $avisos
     * @return Clase
     */
    public function addAviso(\Pyaf\GymBundle\Entity\AvisoFalta $avisos)
    {
        $this->avisos[] = $avisos;
    
        return $this;
    }

    /**
     * Remove avisos
     *
     * @param \Pyaf\GymBundle\Entity\AvisoFalta $avisos
     */
    public function removeAviso(\Pyaf\GymBundle\Entity\AvisoFalta $avisos)
    {
        $this->avisos->removeElement($avisos);
    }

    /**
     * Get avisos
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getAvisos()
    {
        return $this->avisos;
    }

    /**
     * Add asistencias
     *
     * @param \Pyaf\GymBundle\Entity\Asistencia $asistencias
     * @return Clase
     */
    public function addAsistencia(\Pyaf\GymBundle\Entity\Asistencia $asistencias)
    {
        $this->asistencias[] = $asistencias;
    
        return $this;
    }

    /**
     * Remove asistencias
     *
     * @param \Pyaf\GymBundle\Entity\Asistencia $asistencias
     */
    public function removeAsistencia(\Pyaf\GymBundle\Entity\Asistencia $asistencias)
    {
        $this->asistencias->removeElement($asistencias);
    }

    /**
     * Get asistencias
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getAsistencias()
    {
        return $this->asistencias;
    }
}